class Envolvido < ActiveRecord::Base
  has_many :envolvimentos
  has_many :processos, :through => :envolvimentos
  has_many :enquadramentos, :through => :envolvimentos
  composed_of :endereco, 
              :class_name => Endereco, 
              :mapping => [%w(logradouro logradouro), %w(bairro bairro), %w(cep cep), %w(cidade cidade), %w(uf uf)],
              :allow_nil => true

  validates_format_of :cep, :if => lambda { |e| not e.cep.blank? }, :with => /^\d{5}\-?\d{3}$/, :message => "Verifique o formato do CEP"
  validates_format_of :rg, :if => lambda { |e| not e.rg.blank? }, :allow_nil => true, :with =>/^\d+$/, :message => "Verifique o formato do RG"
  validates_format_of :telefone, :if => lambda { |e| not e.cep.blank? }, :with => /^\d{4}\-?\d{4}$/, :allow_nil => true, :message => "Verifique o formato do telefone"
  validates_length_of :rg, :within => 7..10, :if => lambda { |e| not e.rg.blank? }, :allow_nil => true, :too_short => "O RG parece muito curto", :too_long => "O RG parece muito longo"
  validates_presence_of :nome, :message => "Informe o nome do envolvido"
  validates_presence_of :data_nascimento, :message => "Informe a data de nascimento do envolvido"
  validates_uniqueness_of :cpf, :if => lambda { |e| not e.cpf.blank? }, :allow_nil => true, :message => "O CPF informado já foi escolhido"
  validates_uniqueness_of :rg, :if => lambda { |e| not e.rg.blank? }, :allow_nil => true, :message => "O RG informado já foi escolhido"

  def idade
    Time.now.year - data_nascimento.year unless data_nascimento.nil?
  end
  
  def before_save
    self[:cpf].normalize_cpf! unless self[:cpf].nil?
  end

  private
  
  def validate
    #unless cpf.blank?
    #  errors.add(:cpf, "O CPF informado é inválido") unless cpf.is_cpf?
    #end
  end
end